package com.itheima._03字符缓冲流;

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

/**
    目标: 练习题。

    把出师表的数据重新排序到一个新文件中去。

    分析：
        （1）先定义一个集合存储每行文章数据。
        （2）按照行读取文本文件的数据。
        （3）把这些行数据存储到List集合中去。
        （4）把List集合中的数据按照第一个字符进行升序排序。
        （5）遍历List集合中的每行数据，从写写出到一个新的文件中去即可！
 */
public class ExecDemo03 {
    public static void main(String[] args)  {
        try(
                /**   （2）按照行读取文本文件的数据。*/
                BufferedReader br = new BufferedReader(new FileReader("src/csb"));
                /**  （5）遍历List集合中的每行数据，从写写出到一个新的文件中去即可！*/
                BufferedWriter bw = new BufferedWriter(new FileWriter("src/newCsb"));
                ){
            /**   （1）先定义一个集合存储每行文章数据。 */
            List<String> datas = new ArrayList<>();

            /**   （3）把这些行数据存储到List集合中去。 */
            String line = null ;
            while((line = br.readLine())!=null){
                // 把每行数据加入到集合中去存储起来
                datas.add(line);
            }
            System.out.println(datas);
            /**   （4）把List集合中的数据按照第一个字符进行升序排序。*/
            Collections.sort(datas);

            /** 定义中文的大小规则 */
            List<String> sizes = new ArrayList<>();
            Collections.addAll(sizes,"一","二","三","四","五","六","七","八","九","十");
            // datas = [一，...  , 七,..... , 八....]
            // 开始排序
            Collections.sort(datas, new Comparator<String>() {
                @Override
                public int compare(String o1, String o2) {
                    // o1 一,...
                    // o2 七,.....
                    return sizes.indexOf(o1.charAt(0)+"") - sizes.indexOf(o2.charAt(0)+"");
                }
            });
            System.out.println(datas);
            // 遍历排序好的集合中的数据写出到文件中去
            for(String ln : datas){
                bw.write(ln);
                bw.newLine();// 换行！
            }
        }catch (Exception e){
            e.printStackTrace();
        }


    }
}
